﻿using System;
using System.Runtime.Serialization;

namespace OCXS.OCXSServiceLibrary.OPCXMLDA10 {

    [DataContract(Namespace = "http://opcfoundation.org/webservices/XMLDA/1.0/")]
    public class RequestOptions : System.ComponentModel.INotifyPropertyChanged {

        private bool returnErrorTextField;

        private bool returnDiagnosticInfoField;

        private bool returnItemTimeField;

        private bool returnItemPathField;

        private bool returnItemNameField;

        private System.DateTime requestDeadlineField;

        private bool requestDeadlineFieldSpecified;

        private string clientRequestHandleField;

        private string localeIDField;

        public RequestOptions() {
            this.returnErrorTextField = true;
            this.returnDiagnosticInfoField = false;
            this.returnItemTimeField = false;
            this.returnItemPathField = false;
            this.returnItemNameField = false;
        }

        [DataMember(Order = 0)]
        public bool ReturnErrorText {
            get {
                return this.returnErrorTextField;
            }
            set {
                this.returnErrorTextField = value;
                this.RaisePropertyChanged("ReturnErrorText");
            }
        }

        [DataMember(Order = 1)]
        public bool ReturnDiagnosticInfo {
            get {
                return this.returnDiagnosticInfoField;
            }
            set {
                this.returnDiagnosticInfoField = value;
                this.RaisePropertyChanged("ReturnDiagnosticInfo");
            }
        }

        [DataMember(Order = 2)]
        public bool ReturnItemTime {
            get {
                return this.returnItemTimeField;
            }
            set {
                this.returnItemTimeField = value;
                this.RaisePropertyChanged("ReturnItemTime");
            }
        }

        [DataMember(Order = 3)]
        public bool ReturnItemPath {
            get {
                return this.returnItemPathField;
            }
            set {
                this.returnItemPathField = value;
                this.RaisePropertyChanged("ReturnItemPath");
            }
        }

        [DataMember(Order = 4)]
        public bool ReturnItemName {
            get {
                return this.returnItemNameField;
            }
            set {
                this.returnItemNameField = value;
                this.RaisePropertyChanged("ReturnItemName");
            }
        }

        [DataMember(Order = 5)]
        public System.DateTime RequestDeadline {
            get {
                return this.requestDeadlineField;
            }
            set {
                this.requestDeadlineField = value;
                this.RaisePropertyChanged("RequestDeadline");
            }
        }

        [DataMember(Order = 6)]
        public bool RequestDeadlineSpecified {
            get {
                return this.requestDeadlineFieldSpecified;
            }
            set {
                this.requestDeadlineFieldSpecified = value;
                this.RaisePropertyChanged("RequestDeadlineSpecified");
            }
        }

        [DataMember(Order = 7)]
        public string ClientRequestHandle {
            get {
                return this.clientRequestHandleField;
            }
            set {
                this.clientRequestHandleField = value;
                this.RaisePropertyChanged("ClientRequestHandle");
            }
        }

        [DataMember(Order = 8)]
        public string LocaleID {
            get {
                return this.localeIDField;
            }
            set {
                this.localeIDField = value;
                this.RaisePropertyChanged("LocaleID");
            }
        }

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
}
